Groovy&Grails: desarrollorápido de aplicacionesActualización del profesorado de la familia profesional Informática y Comunicaciones9 de Septiembre de 2010
¿QuéesGroovy&Grails?	Combinación perfecta para el desarrollorápido de aplicacionesGroovy Lenguaje de programaciónGrails Entornocompleto de desarrollo (framework MVC, base de datos, tests, contenedor web)Groovy&Grails:desarrollo rápido de aplicaciones-2© 2010 CEFIRE: Actualización del profesorado
¿Quées Groovy?	Groovy en ingléssignificagenialLenguaje de la plataforma JavaLenguaje de programaciónágilydinámicoCaracterísticastípicas de lenguajescomo Python, Ruby o SmalltalkGroovy&Grails:desarrollo rápido de aplicaciones-3© 2010 CEFIRE: Actualización del profesorado
¿Quées Groovy?	Sintaxistípica de JavaSuperclase de JavaEvita la ceremonia de JavaGroovy&Grails:desarrollo rápido de aplicaciones-4© 2010 CEFIRE: Actualización del profesorado
¿A quiénvadirigido Groovy?A los programadores JavaA los programadores de scriptsA los programadoreságilesyextremosGroovy&Grails:desarrollo rápido de aplicaciones-5© 2010 CEFIRE: Actualización del profesorado
Comparando Java y GroovyJava & GroovyMecanismo de paquetesSentenciasDefinición de clasesymétodosEstructuras de controlOperadores, asignacionesyexpresionesManejo de excepcionesDeclaración de literalesInstanciación de objetosyllámadas a métodosGroovy
Nuevasexpresionesyoperadores
Nuevasformas de declararobjetos
Nuevasestructuras de control
Nuevostipos de datos con susoperadoresyexpresiones
Todoes un objetoGroovy&Grails:desarrollo rápido de aplicaciones-6© 2010 CEFIRE: Actualización del profesorado
Características de GroovyBrevedad del lenguajeGroovy evita la ceremoníaqueacompaña a JavaAumenta la expresividad del lenguaje(se dice más con menos)ImportaautomáticamentevariospaquetesGroovy&Grails:desarrollo rápido de aplicaciones-7© 2010 CEFIRE: Actualización del profesorado
El código de GroovyDeclaración de clasesclass Libro { 	private String tituloLibro (String elTitulo){titulo = elTitulo	}	String getTitulo(){		return titulo	}}Groovy&Grails:desarrollo rápido de aplicaciones-8© 2010 CEFIRE: Actualización del profesorado
El código de GroovyScripts en GroovyLibrocgg = new Libro('CursoGroovyGrails')assert cgg.getTitulo() == 'CursoGroovyGrails’assert getTituloAlReves(cgg) == 'sliarGyvoorGosruC'String getTituloAlReves(libro) {titulo = libro.getTitulo()	return titulo.reverse()}Groovy&Grails:desarrollo rápido de aplicaciones-9© 2010 CEFIRE: Actualización del profesorado
El código de GroovyGroovyBeans/*Un Bean en Java*/class Libro{	String titulo;	String getTitulo(){		return this.titulo;	}	void setTitulo(Stringstr){this.titulo = new String(str);		}}Groovy&Grails:desarrollo rápido de aplicaciones-10© 2010 CEFIRE: Actualización del profesorado
El código de GroovyGroovyBeans/*Un Bean en Groovy*/class Libro{	String titulo}Groovy&Grails:desarrollo rápido de aplicaciones-11© 2010 CEFIRE: Actualización del profesorado
El código de GroovyCadenas de textoGStringdef part1 = 'groovy'def part2 = ['g','r','a','i','l','s']assert "me gusta groovy grails" == "me gusta $part1 ${part2.join()}"Groovy&Grails:desarrollo rápido de aplicaciones-12© 2010 CEFIRE: Actualización del profesorado
El código de GroovyGroovy es un lenguaje que implementa un tipado dinámico de datosGroovy puede encargarse de asignarle el tipo de dato a nuestras variablesGroovy&Grails:desarrollo rápido de aplicaciones-13© 2010 CEFIRE: Actualización del profesorado
El código de GroovyTipado dinámico de datosdef a = 2 //java.lang.Integerdef b = 0.4f //java.lang.Floatint c = 3 //java.lang.Integerfloat d = 4 //java.lang.FloatInteger e = 6 //java.lang.IntegerString f = ‘hola’ //java.lang.StringGroovy&Grails:desarrollo rápido de aplicaciones-14© 2010 CEFIRE: Actualización del profesorado
Estructuras de control en GroovyLos típicosif-else, while, switch y try-catch-finallyEl bloqueforutiliza la notacionfor (i in x) { cuerpo} for(i in 1..10)printlnifor(i in [1,2,3,4,5,6,7,8,9,10])printlniGroovy&Grails:desarrollo rápido de aplicaciones-15© 2010 CEFIRE: Actualización del profesorado
Estructuras de control en GroovyO mediante closuresdef alumnos = ['Pedro','Miguel','Alejandro','Elena']alumnos.each{nombre -> printlnnombre}Groovy&Grails:desarrollo rápido de aplicaciones-16© 2010 CEFIRE: Actualización del profesorado
Groovy en el entorno JavaGroovy puede ser ejecutado en la JVM:Compilando con groovycSin compilarGroovy&Grails:desarrollo rápido de aplicaciones-17© 2010 CEFIRE: Actualización del profesorado
GDK: la librería GroovyGDK esunaextensión a la librería JDKFacilita el acceso a base de datosyprocesamiento de XMLExtiendelasfuncionalidades de JavaGroovy&Grails:desarrollo rápido de aplicaciones-18© 2010 CEFIRE: Actualización del profesorado
¿Quées Grails?“Grails es un framework para el desarrollo de aplicaciónes web basado en el lenguaje de programación Groovy, que a suvez se basa en la Plataforma Java”Se basa en los paradigmasCoC (Convention over Configuration)yDRY (Don’t Repeat Yourself)Groovy&Grails:desarrollo rápido de aplicaciones-19© 2010 CEFIRE: Actualización del profesorado
¿Quées Grails?Basado en el patrónModelo Vista ControladorModeloClases de dominioControladoresVista Páginas GSP (Groovy Server Pages)Groovy&Grails:desarrollo rápido de aplicaciones-20© 2010 CEFIRE: Actualización del profesorado
¿Quées Grails?El programador se olvida de determinadosaspectos de configuraciónSe acortan los tiempos de desarrolloGrails es un framework muyágilGroovy&Grails:desarrollo rápido de aplicaciones-21© 2010 CEFIRE: Actualización del profesorado
¿Quées Grails?Grails no sóloes un framework de desarrollo web quesigue el patrón MVC, sinoqueesunaplataformacompleta de desarrolloContenedor/servidor webGestor de base de datosEmpaquetado de la aplicaciónRealización de tests unitarios, de integración y funcionalesGroovy&Grails:desarrollo rápido de aplicaciones-22© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoGrails no sufre del síndromeNIH (Not Invented Here)eintegralasmejoressoluciones de software libreparaconseguir un framework muyrobustoGroovy&Grails:desarrollo rápido de aplicaciones-23© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoGroovyLenguajedinámicoPotentey flexibleSintaxissencillaIntegración con JavaGroovy&Grails:desarrollo rápido de aplicaciones-24© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoFramework SpringFramework ampliamente utilizado por los desarrolladores JavaMuchos años de experienciaGroovy&Grails:desarrollo rápido de aplicaciones-25© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoHibernateFramework de persistenciaobjeto-relacionalEs la base de GORMMapeaclases de dominio contra lastablas de una base de datosGroovy&Grails:desarrollo rápido de aplicaciones-26© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoSiteMeshRenderizado HTMLPatrón de diseñoDecoratorGroovy&Grails:desarrollo rápido de aplicaciones-27© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoFrameworks AJAXScript.aculo.usjQueryPrototypeGroovy&Grails:desarrollo rápido de aplicaciones-28© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoTomcatContenedor webNo es el únicosobre el quefunciona GrailsGroovy&Grails:desarrollo rápido de aplicaciones-29© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoHSQLDBGestor de base de datosAlmacenamiento en memoriao en discoGroovy&Grails:desarrollo rápido de aplicaciones-30© 2010 CEFIRE: Actualización del profesorado
Software de códigoabiertoJUnitFramework para la realización de tests unitarios y de integraciónMuyextendido en JavaGroovy&Grails:desarrollo rápido de aplicaciones-31© 2010 CEFIRE: Actualización del profesorado
ArquitecturaGroovy&Grails:desarrollo rápido de aplicaciones-32© 2010 CEFIRE: Actualización del profesorado
ArquitecturaHerramientas en líneade comandos (GANT)Facilita la escritura de códigoFacilita la gestión de nuestrosproyectosGant es un sistema de automatización de tareasbasado en Apache AntGroovy&Grails:desarrollo rápido de aplicaciones-33© 2010 CEFIRE: Actualización del profesorado
ArquitecturaEjecución de un proyecto en GrailsGroovy&Grails:desarrollo rápido de aplicaciones-34© 2010 CEFIRE: Actualización del profesorado
Características de GrailsScaffolding    “Generaciónautomática de códigoparalascuatrooperacionesbásicas de cualquieraplicación, que son la creación, lectura, ediciónyborrado”Groovy&Grails:desarrollo rápido de aplicaciones-35© 2010 CEFIRE: Actualización del profesorado
Características de GrailsScaffoldingClase de dominioGroovy&Grails:desarrollo rápido de aplicaciones-36© 2010 CEFIRE: Actualización del profesoradoclass Libro{	String titulo	static constraints = {       	title(blank:false)	}}
Características de GrailsScaffolding dinámicoControlador de la clase LibroVistas de la clase Libro: creadas al vueloGroovy&Grails:desarrollo rápido de aplicaciones-37© 2010 CEFIRE: Actualización del profesoradoclass LibroController{def scaffold = Libro }
Características de GrailsScaffolding estáticoControlador de la clase LibroGroovy&Grails:desarrollo rápido de aplicaciones-38© 2010 CEFIRE: Actualización del profesoradograils generate-all Libroclass LibroController{def index = {…}	def list = {…}	def show = {…}def create = {…}	def save = {…}	….}
Características de GrailsScaffolding estáticoVistas de la clase Libro· create.gsp· edit.gsp· list.gsp· show.gspGroovy&Grails:desarrollo rápido de aplicaciones-39© 2010 CEFIRE: Actualización del profesoradograils generate-all Libro
Características de GrailsTestsTests unitariosTests de integraciónTests funcionalesGroovy&Grails:desarrollo rápido de aplicaciones-40© 2010 CEFIRE: Actualización del profesorado
Características de GrailsMapeoobjeto-relacionalGORM (Grails Object Relational Mapping)Uno a uno

Groovy&Grails: desarrollo rápido de aplicaciones

  • 1.
    Groovy&Grails: desarrollorápido deaplicacionesActualización del profesorado de la familia profesional Informática y Comunicaciones9 de Septiembre de 2010
  • 2.
    ¿QuéesGroovy&Grails? Combinación perfecta parael desarrollorápido de aplicacionesGroovy Lenguaje de programaciónGrails Entornocompleto de desarrollo (framework MVC, base de datos, tests, contenedor web)Groovy&Grails:desarrollo rápido de aplicaciones-2© 2010 CEFIRE: Actualización del profesorado
  • 3.
    ¿Quées Groovy? Groovy eningléssignificagenialLenguaje de la plataforma JavaLenguaje de programaciónágilydinámicoCaracterísticastípicas de lenguajescomo Python, Ruby o SmalltalkGroovy&Grails:desarrollo rápido de aplicaciones-3© 2010 CEFIRE: Actualización del profesorado
  • 4.
    ¿Quées Groovy? Sintaxistípica deJavaSuperclase de JavaEvita la ceremonia de JavaGroovy&Grails:desarrollo rápido de aplicaciones-4© 2010 CEFIRE: Actualización del profesorado
  • 5.
    ¿A quiénvadirigido Groovy?Alos programadores JavaA los programadores de scriptsA los programadoreságilesyextremosGroovy&Grails:desarrollo rápido de aplicaciones-5© 2010 CEFIRE: Actualización del profesorado
  • 6.
    Comparando Java yGroovyJava & GroovyMecanismo de paquetesSentenciasDefinición de clasesymétodosEstructuras de controlOperadores, asignacionesyexpresionesManejo de excepcionesDeclaración de literalesInstanciación de objetosyllámadas a métodosGroovy
  • 7.
  • 8.
  • 9.
  • 10.
    Nuevostipos de datoscon susoperadoresyexpresiones
  • 11.
    Todoes un objetoGroovy&Grails:desarrollorápido de aplicaciones-6© 2010 CEFIRE: Actualización del profesorado
  • 12.
    Características de GroovyBrevedaddel lenguajeGroovy evita la ceremoníaqueacompaña a JavaAumenta la expresividad del lenguaje(se dice más con menos)ImportaautomáticamentevariospaquetesGroovy&Grails:desarrollo rápido de aplicaciones-7© 2010 CEFIRE: Actualización del profesorado
  • 13.
    El código deGroovyDeclaración de clasesclass Libro { private String tituloLibro (String elTitulo){titulo = elTitulo } String getTitulo(){ return titulo }}Groovy&Grails:desarrollo rápido de aplicaciones-8© 2010 CEFIRE: Actualización del profesorado
  • 14.
    El código deGroovyScripts en GroovyLibrocgg = new Libro('CursoGroovyGrails')assert cgg.getTitulo() == 'CursoGroovyGrails’assert getTituloAlReves(cgg) == 'sliarGyvoorGosruC'String getTituloAlReves(libro) {titulo = libro.getTitulo() return titulo.reverse()}Groovy&Grails:desarrollo rápido de aplicaciones-9© 2010 CEFIRE: Actualización del profesorado
  • 15.
    El código deGroovyGroovyBeans/*Un Bean en Java*/class Libro{ String titulo; String getTitulo(){ return this.titulo; } void setTitulo(Stringstr){this.titulo = new String(str); }}Groovy&Grails:desarrollo rápido de aplicaciones-10© 2010 CEFIRE: Actualización del profesorado
  • 16.
    El código deGroovyGroovyBeans/*Un Bean en Groovy*/class Libro{ String titulo}Groovy&Grails:desarrollo rápido de aplicaciones-11© 2010 CEFIRE: Actualización del profesorado
  • 17.
    El código deGroovyCadenas de textoGStringdef part1 = 'groovy'def part2 = ['g','r','a','i','l','s']assert "me gusta groovy grails" == "me gusta $part1 ${part2.join()}"Groovy&Grails:desarrollo rápido de aplicaciones-12© 2010 CEFIRE: Actualización del profesorado
  • 18.
    El código deGroovyGroovy es un lenguaje que implementa un tipado dinámico de datosGroovy puede encargarse de asignarle el tipo de dato a nuestras variablesGroovy&Grails:desarrollo rápido de aplicaciones-13© 2010 CEFIRE: Actualización del profesorado
  • 19.
    El código deGroovyTipado dinámico de datosdef a = 2 //java.lang.Integerdef b = 0.4f //java.lang.Floatint c = 3 //java.lang.Integerfloat d = 4 //java.lang.FloatInteger e = 6 //java.lang.IntegerString f = ‘hola’ //java.lang.StringGroovy&Grails:desarrollo rápido de aplicaciones-14© 2010 CEFIRE: Actualización del profesorado
  • 20.
    Estructuras de controlen GroovyLos típicosif-else, while, switch y try-catch-finallyEl bloqueforutiliza la notacionfor (i in x) { cuerpo} for(i in 1..10)printlnifor(i in [1,2,3,4,5,6,7,8,9,10])printlniGroovy&Grails:desarrollo rápido de aplicaciones-15© 2010 CEFIRE: Actualización del profesorado
  • 21.
    Estructuras de controlen GroovyO mediante closuresdef alumnos = ['Pedro','Miguel','Alejandro','Elena']alumnos.each{nombre -> printlnnombre}Groovy&Grails:desarrollo rápido de aplicaciones-16© 2010 CEFIRE: Actualización del profesorado
  • 22.
    Groovy en elentorno JavaGroovy puede ser ejecutado en la JVM:Compilando con groovycSin compilarGroovy&Grails:desarrollo rápido de aplicaciones-17© 2010 CEFIRE: Actualización del profesorado
  • 23.
    GDK: la libreríaGroovyGDK esunaextensión a la librería JDKFacilita el acceso a base de datosyprocesamiento de XMLExtiendelasfuncionalidades de JavaGroovy&Grails:desarrollo rápido de aplicaciones-18© 2010 CEFIRE: Actualización del profesorado
  • 24.
    ¿Quées Grails?“Grails esun framework para el desarrollo de aplicaciónes web basado en el lenguaje de programación Groovy, que a suvez se basa en la Plataforma Java”Se basa en los paradigmasCoC (Convention over Configuration)yDRY (Don’t Repeat Yourself)Groovy&Grails:desarrollo rápido de aplicaciones-19© 2010 CEFIRE: Actualización del profesorado
  • 25.
    ¿Quées Grails?Basado enel patrónModelo Vista ControladorModeloClases de dominioControladoresVista Páginas GSP (Groovy Server Pages)Groovy&Grails:desarrollo rápido de aplicaciones-20© 2010 CEFIRE: Actualización del profesorado
  • 26.
    ¿Quées Grails?El programadorse olvida de determinadosaspectos de configuraciónSe acortan los tiempos de desarrolloGrails es un framework muyágilGroovy&Grails:desarrollo rápido de aplicaciones-21© 2010 CEFIRE: Actualización del profesorado
  • 27.
    ¿Quées Grails?Grails nosóloes un framework de desarrollo web quesigue el patrón MVC, sinoqueesunaplataformacompleta de desarrolloContenedor/servidor webGestor de base de datosEmpaquetado de la aplicaciónRealización de tests unitarios, de integración y funcionalesGroovy&Grails:desarrollo rápido de aplicaciones-22© 2010 CEFIRE: Actualización del profesorado
  • 28.
    Software de códigoabiertoGrailsno sufre del síndromeNIH (Not Invented Here)eintegralasmejoressoluciones de software libreparaconseguir un framework muyrobustoGroovy&Grails:desarrollo rápido de aplicaciones-23© 2010 CEFIRE: Actualización del profesorado
  • 29.
    Software de códigoabiertoGroovyLenguajedinámicoPotenteyflexibleSintaxissencillaIntegración con JavaGroovy&Grails:desarrollo rápido de aplicaciones-24© 2010 CEFIRE: Actualización del profesorado
  • 30.
    Software de códigoabiertoFrameworkSpringFramework ampliamente utilizado por los desarrolladores JavaMuchos años de experienciaGroovy&Grails:desarrollo rápido de aplicaciones-25© 2010 CEFIRE: Actualización del profesorado
  • 31.
    Software de códigoabiertoHibernateFrameworkde persistenciaobjeto-relacionalEs la base de GORMMapeaclases de dominio contra lastablas de una base de datosGroovy&Grails:desarrollo rápido de aplicaciones-26© 2010 CEFIRE: Actualización del profesorado
  • 32.
    Software de códigoabiertoSiteMeshRenderizadoHTMLPatrón de diseñoDecoratorGroovy&Grails:desarrollo rápido de aplicaciones-27© 2010 CEFIRE: Actualización del profesorado
  • 33.
    Software de códigoabiertoFrameworksAJAXScript.aculo.usjQueryPrototypeGroovy&Grails:desarrollo rápido de aplicaciones-28© 2010 CEFIRE: Actualización del profesorado
  • 34.
    Software de códigoabiertoTomcatContenedorwebNo es el únicosobre el quefunciona GrailsGroovy&Grails:desarrollo rápido de aplicaciones-29© 2010 CEFIRE: Actualización del profesorado
  • 35.
    Software de códigoabiertoHSQLDBGestorde base de datosAlmacenamiento en memoriao en discoGroovy&Grails:desarrollo rápido de aplicaciones-30© 2010 CEFIRE: Actualización del profesorado
  • 36.
    Software de códigoabiertoJUnitFrameworkpara la realización de tests unitarios y de integraciónMuyextendido en JavaGroovy&Grails:desarrollo rápido de aplicaciones-31© 2010 CEFIRE: Actualización del profesorado
  • 37.
    ArquitecturaGroovy&Grails:desarrollo rápido deaplicaciones-32© 2010 CEFIRE: Actualización del profesorado
  • 38.
    ArquitecturaHerramientas en líneadecomandos (GANT)Facilita la escritura de códigoFacilita la gestión de nuestrosproyectosGant es un sistema de automatización de tareasbasado en Apache AntGroovy&Grails:desarrollo rápido de aplicaciones-33© 2010 CEFIRE: Actualización del profesorado
  • 39.
    ArquitecturaEjecución de unproyecto en GrailsGroovy&Grails:desarrollo rápido de aplicaciones-34© 2010 CEFIRE: Actualización del profesorado
  • 40.
    Características de GrailsScaffolding “Generaciónautomática de códigoparalascuatrooperacionesbásicas de cualquieraplicación, que son la creación, lectura, ediciónyborrado”Groovy&Grails:desarrollo rápido de aplicaciones-35© 2010 CEFIRE: Actualización del profesorado
  • 41.
    Características de GrailsScaffoldingClasede dominioGroovy&Grails:desarrollo rápido de aplicaciones-36© 2010 CEFIRE: Actualización del profesoradoclass Libro{ String titulo static constraints = { title(blank:false) }}
  • 42.
    Características de GrailsScaffoldingdinámicoControlador de la clase LibroVistas de la clase Libro: creadas al vueloGroovy&Grails:desarrollo rápido de aplicaciones-37© 2010 CEFIRE: Actualización del profesoradoclass LibroController{def scaffold = Libro }
  • 43.
    Características de GrailsScaffoldingestáticoControlador de la clase LibroGroovy&Grails:desarrollo rápido de aplicaciones-38© 2010 CEFIRE: Actualización del profesoradograils generate-all Libroclass LibroController{def index = {…} def list = {…} def show = {…}def create = {…} def save = {…} ….}
  • 44.
    Características de GrailsScaffoldingestáticoVistas de la clase Libro· create.gsp· edit.gsp· list.gsp· show.gspGroovy&Grails:desarrollo rápido de aplicaciones-39© 2010 CEFIRE: Actualización del profesoradograils generate-all Libro
  • 45.
    Características de GrailsTestsTestsunitariosTests de integraciónTests funcionalesGroovy&Grails:desarrollo rápido de aplicaciones-40© 2010 CEFIRE: Actualización del profesorado
  • 46.
    Características de GrailsMapeoobjeto-relacionalGORM(Grails Object Relational Mapping)Uno a uno
  • 47.
  • 48.
  • 49.
    Restricciones en laspropias clases de dominioGroovy&Grails:desarrollo rápido de aplicaciones-41© 2010 CEFIRE: Actualización del profesorado
  • 50.
    Características de GrailsPluginsSeguridadAJAXRealizaciónde testsBúsquedaInformesGroovy&Grails:desarrollo rápido de aplicaciones-42© 2010 CEFIRE: Actualización del profesorado
  • 51.
    Ejemplosdesarrolladoscon GrailsJobsket (http://www.jobsket.com)Uifi(http://www.uifi.es)Aloja (http://www4.uc3m.es/aloja)ManagerT1 (http://www.managert1.com)Groovy&Grails:desarrollo rápido de aplicaciones-43© 2010 CEFIRE: Actualización del profesorado
  • 52.
  • 53.
    BibliografíaGroovy in Action(Manning)BeginningGroovy and Grails (Apress)Grails, a quick start guide (Pragmatic programmers)Groovy&Grails:desarrollo rápido de aplicaciones-45© 2010 CEFIRE: Actualización del profesorado
  • 54.

Notas del editor

  • #4 - Paraquealgo se autodenominecomo genial, tienequeestarmuyseguro de simismo, al igualquealguiencuando le pone supropionombre a unaempresao un producto. Hay más de 100 lenguajesque se puedenejecutar en la Máquina Virtual de Java. Fuente: http://en.wikipedia.org/wiki/List_of_JVM_languages. Ágil porque nos ahorra mucha de la verborrea que siempre tiene Java y dinámico porque su tipado de datos es dinámico, es decir, es Groovy quien se encarga de elegir que tipo de datos es cada objeto de nuestras aplicaciones, aunque si lo deseamos, podemos especificárselo nosotros mismos.
  • #5 - Cuandovemosunaclaseo un script en Groovy, detectaremossusimilitud con Java, aunque también notaremos como se agiliza el código- Se puededecirque Groovy esunasuperclase de Java, puestoquepuedeutilizartodaslascaracterísticas de Java junto con algunasmáspropias de Groovy- Uno de los aspectosquemásrechazan de Java muchosdesarrolladoresessuverborrea en determinadasocasionesy se necesitademasiadocódigoparahacermuypoco.
  • #6 A los programadores Java, puestoque en el fondo Groovy es JavaA los programadores de scripts, puestoquees un lenguajemuyexpresivoyquepuedeconseguir mucho con muypococódigo, algoque a estetipo de desarrolladores les encanta.A los programadoreságilesyextremosyaquepuedenimplementarfácilmentesusteorias (SCRUM, XP)
  • #8 En Java, un simple programaqueimprima el típicoHolaMundo, suponeescribirmuchaslíneas de código. En Groovy se evita mucho de estecódigoparaconseguir lo mismo.Al evitarestecódigo “innecesario”, se aumenta la expresividad del lenguaje, puestoque con menos se dice másGroovy importaautomáticamente los paquetesgroovy.lang.*, groovy.util.*, java.lang.*, java.util.*, java.net.* yjava.io.*, asícomolasclasesjava.Math.BigIntegeryjava.Math.BigDecimal, asíquesiempre vas a poderutilizartodasestasclases sin necesidad de queseanimportadossuspaquetes al inicio del programa. Estotambiénesdiferente a Java, dondesólo se importaautomáticamente el paquetejava.lang.*.
  • #9 Esta sería una típica definición de una clase en Groovy con su getter y su setter. Notamos la ausencia de puntos y comas. Ya empezamos a ahorrarnos código innecesario
  • #10 Además de las clases en Groovy, también podemos tener scripts dentro de las mismas clases para realizar determinadas acciones sin necesidad de tener un método main. En caso de que necesitemos pasar argumentos a nuestro código Groovy.
  • #11 Este sería un bean en Java que define la clase Libro con una única propiedad, sobre el cual se definen sus getters y sus setters
  • #12 Este es el mismo bean en Groovy. En Groovy si tenemos una propiedad pública, automáticamente se crea el getter y el setter de dicha propiedad. En esta ocasión, si no le indicamos nada a la propiedad titulo, esta se configura automáticamente como privada, sin embargo, se creará como públicos sus métodos getter y setter.
  • #13 Estoque los programadores LAMPven normal, en Java no estan obvio y suele necesitarse mucho código para conseguir lo mismo. Si utilizamos comillas dobles, no es necesario escapar en las cadenas de texto.
  • #14 Groovy es un lenguaje que implementa un tipado dinámico de datos. Esto consiste en que es Groovy quien decide (si el programador no indica otra cosa diferente) que tipo de datos es una variable.
  • #15 Como vemos en el anterior código, en las dos primeras declaraciones de variables, dejamos que sea Groovy quien se encargue de asignarle el tipo de datos a las variables a y b, mientras que en las dos segundas le especificamos un tipo de datos primitivo aunque sabemos que Groovy lo va a tratar como tipo de dato referencia.Por último, en las dos últimas especificamos directamente el tipo de dato referencia que estamos definiendo
  • #16 Groovy hereda de Java los típicos if-else, while, switch y try-catch-finally de Java, pero modifica la forma en la que se implementan los bucles for. Cualquier variable que sea iterable va a poder ser utilizada en un bucle for
  • #22 El programador se olvida de determinados aspectos de configuración, siempre que sigan las convenciones establecidas por los desarrolladores.
  • #30 Comentarque en la versión 1.2 se añade la posibilidad de utilizar Tomcat comocontenedorde aplicaciones. Hacer hincapie en que no es único sobre el que funcionarán nuestras aplicaciones hechas en Grails, sino que simplemente es este el que viene en la distribución de Grails para ejecutar nuestra aplicación
  • #31 Comentar los tres niveles por defecto con los que viene Grails, (desarrollo, test y producción) y que posteriormente veremos un ejemplo del fichero de configuración del acceso a la base de datos
  • #36 Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  • #37 Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  • #38 Comentar que los métodos del controlador de la clase Libro son los que hay en una plantilla de Grails y que pueden ser modificados fácilmente por nosotros para realizar una serie de cambios y así poder crear la máquina de crear aplicaciones.
  • #39 Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  • #40 Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  • #41 Los tests unitarios son aquellos que comprueban la validez de nuestras clases sin tener en cuenta las relaciones con el resto del sistema (otras clases, sistema de ficheros, conexiones de red, etc)Los tests de integración comprueban la validez de nuestras clases cuando se relacionan con el resto del sistema (otras clases, sistema de ficheros, conexiones de red, etc)Los tests funcionales comprueban la funcionalidad de nuestra aplicación. Selenium y Canoo son dos frameworks que nos permitirán desarrollar este tipo de tests
  • #42 El mapeo objeto-relacional nos permite convertir datos obtenidos de una base de datos relacional para poder trabajar con los paradigmas de los lenguajes orientados a objetos
  • #43 Comentar la comunidadcadavezmásgrande de pluginsdesarrolladosporlos usuarios. Hay cerca de 350 plugins disponibles para la comunidad de desarrolladores Grails. Este número sigue en aumento.